This relates to graphics processing.
Digital artists and game developers often want non-physically-based control over depth of field (DOF) parameters. Useful examples include the possibility to limit foreground blur or to extend the in-focus range while preserving the foreground and background blur. With post-processed DOF approaches, this is straightforward since the blur filter is expressed as a user-provider function of the scene depth.
In semantic depth of field the amount of DOF is controlled on a per-object basis. A set of depth-sorted layers or billboards, which are individually blurred and composited into a final image may be used. However, visibility is never resolved correctly using the above methods, and consequently, their use is limited.
A physically-based camera model can be simulated with distributed ray tracing through a set of lenses and apertures. Non-linear ray tracing (by tracing bent rays) may simulate non-physical effects such as multiple focus planes. Each pixel may have a unique ray distribution. In general, each point in three-dimensional (3D) space can have a different blur value.
Flexible defocus blur allows for varying lens parameters for each pixel to emulate effects like tilt-shift photography, curvature of confusion, and lens aberrations. Visibility is resolved by ray tracing through a layered depth image. User-provided camera space DOF constraints are interpolated using a least-squares fit to derive varying per-pixel lens parameters. It is far from straightforward to extend these ray tracing approaches to handle simultaneous motion blur and depth of field.
State-of-the-art stochastic rasterizers, e.g. RenderMan, have fully programmable surface and displacement shading, and extensive global camera control, where the aperture shape and density can be adjusted. To the best of our knowledge, however, there is no publicly known flexible DOF approach for stochastic rasterizers with local control, such that the blur amount can be controlled per-vertex.